package com.google.project.client.Service;

import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.project.shared.ProjectStaffDTO;
import com.google.project.shared.UsersDTO;

public interface UsersServiceAsync {
	void addUser(UsersDTO user, AsyncCallback<UsersDTO> callback);

	void getUserList(AsyncCallback<List<UsersDTO>> callback);

	void updateUser(UsersDTO userDTO, AsyncCallback<Void> callback);

	void deleteUser(String id, AsyncCallback<Void> callback);

	void getUserById(String userId, AsyncCallback<UsersDTO> callback);

	void searchUserList2(Long userGroup, String status, String userCode,
			AsyncCallback<List<UsersDTO>> callback);

	void searchUserList(AsyncCallback<List<UsersDTO>> callback);

	void deleteUserList(List<UsersDTO> list, AsyncCallback<Void> asyncCallback);

	void searchUserList(String userName, String currentProjID, String specID,
			int exp, AsyncCallback<List<UsersDTO>> callback);

	void getUserListByCurrentPJId(AsyncCallback<List<UsersDTO>> callback);

	void searchUserList(String fullName, String userCode, String specialize,
			AsyncCallback<List<UsersDTO>> callback);

	void getUserListExceptById(List<ProjectStaffDTO> projectStaffDTO,
			AsyncCallback<List<UsersDTO>> callback);

	void getUserListByStatus(String status,
			AsyncCallback<List<UsersDTO>> callback);

	void getInfoByUserCode(String userCode,
			AsyncCallback<List<UsersDTO>> callback);

	void updateAccount(UsersDTO userDTO, AsyncCallback<Void> callback);

}
